home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gigarom 1
/
Gigarom Macintosh Archives (Quantum Leap)(CDRM1080320)(1993).iso
/
FILES
/
DEV
/
C-H
/
Discipline2.0.2.sit
/
Discipline 2.0.2
/
Discipline Examples
/
AddrTest2.c
< prev
next >
Wrap
C/C++ Source or Header
|
1991-04-09
|
924b
|
45 lines
#include <Types.h>
#include <Memory.h>
#include <QuickDraw.h>
#include <Packages.h>
#include <Strings.h>
#include <SysEqu.h>
#include <ToolUtils.h>
#include <Traps.h>
#include "Wimpy.h"
//changed this routine to C from pascal
pascal char * testAddr(adr)
Ptr adr;
{
#define applScratch 0xA78
typedef unsigned long *lintPtr;
unsigned long junk, savedJunk,oldErrHndlr;
/* load err handler
save old applScratch data
put 1 at applScratch
access address
is applScratch is zero then
error
else
nil
restore old applScratch data
unload err handler
*/
oldErrHndlr = *(lintPtr)0x00000008;
*(lintPtr)8 =(long)&(BusErrHandler);
savedJunk = *(lintPtr)applScratch;
*(lintPtr)applScratch = 1;
(long)adr = (long)adr & 0xFE;
junk = *(lintPtr)adr;
if( *(lintPtr)applScratch == 0)
return("Address is invalid.");
else
return(nil);
*(lintPtr)applScratch = savedJunk;
*(lintPtr)0x00000008 = oldErrHndlr;
}